from werkzeug.security import generate_password_hash, check_password_hash
from watchlist import db

# 用户表
class User(db.Model):  # 表名将会是 user（自动生成，小写处理）
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)  # 主键
    name = db.Column(db.String(20))  # 名字
    username = db.Column(db.String(20), nullable=False)  # 用户名
    password_hash = db.Column(db.String(128), nullable=False)  # 密码散列值
    user_role = db.Column(db.String(10), nullable=False)  # 用户角色user/admin/visitor
    create_time = db.Column(db.String(20), nullable=False)  # 创建时间
    del_flag = db.Column(db.Integer, default=0)  # 0正常1删除
    def set_password(self, password):  # 用来设置密码的方法，接受密码作为参数
        self.password_hash = generate_password_hash(password)  # 将生成的密码保持到对应字段
    def set_userrole(self, userrole):
        self.user_role = userrole
    def set_createtime(self, createtime):
        self.create_time = createtime

    def validate_password(self, password):  # 用于验证密码的方法，接受密码作为参数
        return check_password_hash(self.password_hash, password)  # 返回布尔值

# 会话记录表
class Message_History(db.Model):
    __tablename__ = 'message_history'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer, nullable=False)  # 用户id
    user_type = db.Column(db.String(10), nullable=False)  # 会话用户类型system、user或 assistant
    content = db.Column(db.String(1000), nullable=False)  # 内容
    total_tokens = db.Column(db.Integer, nullable=False)  # 消耗令牌数量
    create_time = db.Column(db.String(20), nullable=False)  # 创建时间
    del_flag = db.Column(db.Integer, default=0)  # 0正常1删除

# 用户日志表
class Log_History(db.Model):
    __tablename__ = 'log_history'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer, nullable=False)  # 用户id
    log_msg = db.Column(db.String(1000), nullable=False)  # 日志内容
    create_time = db.Column(db.String(20), nullable=False)  # 创建时间
    